home *** CD-ROM | disk | FTP | other *** search
- #!/bin/bash
-
- # A small example program for using the new getopt(1) program.
- # This program will only work with bash(1)
- # An similar program using the tcsh(1) script language can be found
- # as parse.tcsh
-
- # Example input and output (from the bash prompt):
- # ./parse.bash -a par1 'another arg' --c-long 'wow!*\?' -cmore -b " very long "
- # Option a
- # Option c, no argument
- # Option c, argument `more'
- # Option b, argument ` very long '
- # Remaining arguments:
- # --> `par1'
- # --> `another arg'
- # --> `wow!*\?'
-
- # Note that we use `"$@"' to let each command-line parameter expand to a
- # separate word. The quotes around `$@' are essential!
- # We need TEMP as the `eval set --' would nuke the return value of getopt.
- TEMP=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \
- -n 'example.bash' -- "$@"`
-
- if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
-
- # Note the quotes around `$TEMP': they are essential!
- eval set -- "$TEMP"
-
- while true ; do
- case "$1" in
- -a|--a-long) echo "Option a" ; shift ;;
- -b|--b-long) echo "Option b, argument \`$2'" ; shift 2 ;;
- -c|--c-long)
- # c has an optional argument. As we are in quoted mode,
- # an empty parameter will be generated if its optional
- # argument is not found.
- case "$2" in
- "") echo "Option c, no argument"; shift 2 ;;
- *) echo "Option c, argument \`$2'" ; shift 2 ;;
- esac ;;
- --) shift ; break ;;
- *) echo "Internal error!" ; exit 1 ;;
- esac
- done
- echo "Remaining arguments:"
- for arg do echo '--> '"\`$arg'" ; done
-